package tech.wangtong.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import tech.wangtong.pojo.Result;
import tech.wangtong.pojo.User;
import tech.wangtong.service.UserService;
import tech.wangtong.service.impl.UserServiceImpl;
import tech.wangtong.util.PageHelper;

//专门接收ajax请求的controller
//@Controller
@CrossOrigin(origins = "*") // 允许所有来源//允许跨域请求,前端才能访问
@RestController//等价于@Controller+@ResponseBody
//相当于下面的所以方法都加了@ResponseBody
public class AjaxController {
    UserService us=new UserServiceImpl();
    //处理同步请求:方法返回String表示转发的地址
    //处理ajax请求的(异步请求),方法返回值为String,表示返回的json串
    //数据不能存储作用域(刷新才可以显示作用域的结构),方法返回值
    //就是给前端返回的结果
    //bug:如果异步请求返回值String需要设置响应编码方式
    //如果是非字符串(数字,对象,集合)就不需要处理,默认返回json(识别中文)
    @RequestMapping(value = "/checkUsername",produces = "text/html;charset=utf-8")
//    @ResponseBody//表示返回的不是地址,而是给前端的响应结果
    public String checkUsername(String username){
        boolean b=us.checkUsername(username);
        if (b){
            return "用户名已经存在";
        }
        return "用户名不能重复";
    }

    //@RequestBody表示将请求体中的数据封装到User对象中
    @RequestMapping("/add")
    @ResponseBody //表示返回的不是地址,而是给前端的响应结果
    //如果返回对象，可用自动转换成json串(自动识别中文)
    //@RequestBody User u 表示将请求体中的数据封装到User对象中
    public Result addUser(@RequestBody User u){
        System.out.println(u.getName()+" "+u.getPassword());
        int i = us.add(u);
        if(i>0) return new Result(1,"添加成功");
        return new Result(0,"添加失败");
    }
    @RequestMapping("/page")
    @ResponseBody
    public Result page(
            @RequestParam(defaultValue = "1") Integer pageNum,
            @RequestParam(defaultValue = "3") Integer pageSize){
        PageHelper<User> p = us.page(pageNum, pageSize);
        return new Result(1,null,p);
    }
}
